<?php

class ViewImprimirSolicitudCredito extends TPage {
//<editor-fold defaultstate="collapsed" desc="Verifica Usuario Logueado">
  /**
   * determina si el usuario esta logueado en el sistema
   * @author VSR, 01/01/2011
   */
  private function usuarioLogueado(){
    $estaLogueado = false;
    try {
      $session = new THttpSession;
      $session->open();
      $oUsuario = $session[Usuario::NOMBRE_ENTIDAD];
      if(isset($oUsuario)){
        $estaLogueado = true;
      }
    } catch (Exception $e) {
      $estaLogueado = false;
    }
    return $estaLogueado;
  }

  /**
   * redirecciona al login
   * @author VSR, 01/01/2011
   */
  private function redireccionarLogin(){
    $this->Response->redirect($this->Service->constructUrl("FrmLoginWf"));
  }
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Constantes">
  const SESION_DATOS = "arr";
  //funciones pagina
  const FUNCION_VER = "Ver";
  //indices arreglo
  const ARRAY_DETALLE = 0;
  const ARRAY_ARCHIVOS = 1;

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Privados">
  /**
   * obtiene los registros desde la base de datos
   * @author VSR, 01/01/2011
   */
  private function obtenerDatos($idFlujo){
    try {
      $oUsuarioWf = Utilidades::obtenerSessionPorNombre(Usuario::NOMBRE_ENTIDAD);
      $idUsuario = $oUsuarioWf->getId();
      $nombrePagina = Utilidades::obtenerNombrePaginaActual($this);
      $arr = WfPlantillaSolicitudCredito::obtenerDetalle($idFlujo, WfPlantillaSolicitudCredito::NOMBRE_ENTIDAD_ARCHIVO, $idUsuario);
      Utilidades::grabarSessionPorNombre(self::SESION_DATOS.$nombrePagina, $arr);
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * actualiza los controles de la pagina segun los datos obtenidos
   * @author VSR, 01/01/2011
   */
  private function actualizaInterfaz(){
    $totalRegistros = 0;
    $sb = new StringBuilder();

    try {
      $nombrePagina = Utilidades::obtenerNombrePaginaActual($this);
      $arr = Utilidades::obtenerSessionPorNombre(self::SESION_DATOS.$nombrePagina);

      $idFlujo = $this->Request["id"];
      $strNombreFlujo = "";
      $strRut = "";
      $strNombre = "";
      $strDireccion = "";
      $strComuna = "";
      $strTelefono = "";
      $strCelular = "";
      $strEmail = "";
      $strNombreCredito = "";
      $dblMonto = "0";
      $intPlazoEnMeses = "0";
      $dblTasa = "0";
      $dblValorCuota = "0";
      $strFechaInicioPago = "";
      $strFechaSolicitud = "";
      $strFechaAprobacion = "";

      if (!is_null($arr)) {
        $arrDetalle = $arr[self::ARRAY_DETALLE];
        $totalRegistros = count($arrDetalle);
        if ($totalRegistros > 0) {
          $row = $arrDetalle[0];
          $strNombreFlujo = $row["NombreFlujo"];
          $strRut = $row["RutCompleto"];
          $strNombre = $row["NombreCompleto"];
          $strDireccion = $row["Direccion"];
          $strComuna = $row["Comuna"];
          $strTelefono = $row["Telefono"];
          $strCelular = $row["Celular"];
          $strEmail = $row["Email"];
          $strNombreCredito = $row["NombreCredito"];
          $dblMonto = $row["Monto"];
          $intPlazoEnMeses = $row["PlazoEnMeses"];
          $dblTasa = $row["Tasa"];
          $dblValorCuota = $row["ValorCuota"];
          $strFechaInicioPago = $row["FechaInicioPago"];
          $strFechaSolicitud = $row["FechaSolicitud"];
          $strFechaAprobacion = $row["FechaAprobacion"];
        }
      }
    } catch (Exception $e) {
      $strNombreFlujo = "";
      $strRut = "";
      $strNombre = "";
      $strDireccion = "";
      $strComuna = "";
      $strTelefono = "";
      $strCelular = "";
      $strEmail = "";
      $strNombreCredito = "";
      $dblMonto = "0";
      $intPlazoEnMeses = "0";
      $dblTasa = "0";
      $dblValorCuota = "0";
      $strFechaInicioPago = "";
      $strFechaSolicitud = "";
      $strFechaAprobacion = "";
    }

    //formatea valores
    $strEmail = (Utilidades::isNullOrEmpty($strEmail)) ? "-" : $strEmail;
    $strTelefono = (Utilidades::isNullOrEmpty($strTelefono)) ? "-" : $strTelefono;
    $strCelular = (Utilidades::isNullOrEmpty($strCelular)) ? "-" : $strCelular;
    $dblMonto = "$".Utilidades::formatearConSeparadorMiles($dblMonto);
    $intPlazoEnMeses = Utilidades::formatearConSeparadorMiles($intPlazoEnMeses)." ".( ($intPlazoEnMeses == 1) ? "mes" : "meses" );
    $dblTasa = Utilidades::formatearConSeparadorMiles($dblTasa,1)."%";
    $dblValorCuota = "$".Utilidades::formatearConSeparadorMiles($dblValorCuota,1);

    $this->lblTituloFormulario->Text = $strNombreFlujo;
    $this->lblRut->Text = $strRut;
    $this->lblNombre->Text = $strNombre;
    $this->lblDireccion->Text = $strDireccion;
    $this->lblComuna->Text = $strComuna;
    $this->lblTelefono->Text = $strTelefono;
    $this->lblCelular->Text = $strCelular;
    $this->lblEmail->Text = $strEmail;
    $this->lblNombreCredito->Text = $strNombreCredito;
    $this->lblMonto->Text = $dblMonto;
    $this->lblPlazoEnMeses->Text = $intPlazoEnMeses;
    $this->lblTasa->Text = $dblTasa;
    $this->lblValorCuota->Text = $dblValorCuota;
    $this->lblFechaInicioPago->Text = $strFechaInicioPago;
    $this->lblFechaSolicitud->Text = $strFechaSolicitud;
    $this->lblFechaAprobacion->Text = $strFechaAprobacion;
    $this->wucHistorialAprobaciones->cargarDatos($idFlujo);
  }

  /**
   * inicializa algunos controles cuando se carga por primera vez la pagina
   * @param <type> $isPostBack
   * @author VSR, 01/01/2011
   */
  private function inicializaControles($isPostBack){
    try {
      //inicializa los controles del Correlativo y Locales
      $this->inicializaControlesEventoWindowOnLoad($isPostBack);

      //verifica los permisos sobre los controles
      $this->verificarPermisos();

    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * inicializa los controles al cargar la pagina
   * @param <type> $isPostBack
   * @author VSR, 01/01/2011
   */
  private function inicializaControlesEventoWindowOnLoad($isPostBack) {
    $nombrePagina = $this->obtenerNombrePagina();
    $sb = new StringBuilder();

    //se deja estructura por si se utiliza en algun momento
    //$sb->appendLine("-- codigo --");
    //$this->Page->ClientScript->registerEndScript("windowOnLoad", $sb->toString());
  }

  /**
   * verifica los permisos sobre los controles
   * @author VSR, 01/01/2011
   */
  private function verificarPermisos(){
    $paginaActual = Utilidades::obtenerNombrePaginaActual($this);
    //verifica los permisos para los controles
    $this->pnlContenido->Visible = true; //Utilidades::tienePermiso($paginaActual, self::FUNCION_VER);

    if(!$this->pnlContenido->Visible) {
      $this->pnlMensajeAcceso->Visible = true;
      Utilidades::setPanelMensajeUsuario($this->pnlMensajeAcceso, "No tiene permiso para ver esta p&aacute;gina", "50%", Utilidades::ESTILO_MENSAJE_ERROR);
    }
  }

  /**
   * obtiene nombre de la pagina actual
   * @return <type>
   * @author VSR, 01/01/2011
   */
  private function obtenerNombrePagina(){
    $nombrePagina = Utilidades::obtenerNombrePaginaActual($this);
    return $nombrePagina;
  }

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Eventos Controles">
  public function onLoad($param) {
    parent::onLoad($param);
    //si no esta conectado entonces lo redirecciona al login
    if(!$this->usuarioLogueado()){
      $this->redireccionarLogin();
    }
    $idFlujo = $this->Request["id"];
    $nombrePagina = $this->obtenerNombrePagina();
    $this->txtThemeBaseUrl->Value = $this->Page->Theme->BaseUrl;

    if(!$this->IsPostBack) {
      $this->obtenerDatos($idFlujo);
      $this->inicializaControles($this->IsPostBack);
      $this->actualizaInterfaz();
    }

  }

//</editor-fold>

  
}
?>
